<?php
namespace Album\Controller;
use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;
use Album\Model\Album;
use Album\Form\AlbumForm;


class AlbumController extends AbstractActionController
{
	protected $albumTable;
	
	public function indexAction()
    {
        //$this->getServiceLocator()->get('Zend\Log')->err('ádsad');
    	return array(
            'albums' => $this->getAlbumTable()->fetchAll(),
        );
    	
    	
    }

    public function addAction()
    {
    	$form = new AlbumForm();
    	$form->get('submit')->setValue('add');
    	$request = $this->getRequest();
    	
    	if ($request->isPost()){
    		$album = new Album();
    		$form->setInputFilter($album->getInputFilter());
    		$form->setData($request->getPost());
    		if ($form->isValid())
    		{
    			$album->exchangeArray($form->getData());
    			$this->getAlbumTable()->saveAlbum($album);
    			return $this->redirect()->toRoute('album');
    		}
    		
    	}
    	return array('form'=>$form);
    }

    public function editAction()
    {
    	$id = (int) $this->params()->fromRoute('id',0);
    	if(!$id)
    	{
    		return $this->redirect()->toRoute('album',array('action'=>'add'));
    	}
    	try {
    		$album = $this->getAlbumTable()->getAlbum($id);
    	} catch (Exception $e) {
    		return $this->redirect()->toRoute('album',array('action'=>'index'));
    	}
    	
    	$form = new AlbumForm();
    	$form->bind($album);
    	$form->get('submit')->setAttribute('value', 'Edit');
    	
    	$request = $this->getRequest();
    	
    	if ($request->isPost())
    	{
    		$form->setInputFilter($album->getInputFilter());
    		$form->setData($request->getPost());
    		if ($form->isValid())
    		{
    			$this->getAlbumTable()->saveAlbum($album);
    			return $this->redirect()->toRoute('album',array('action'=>'index'));
    		}
    	}
    	return array('form'=>$form,'id'=>$id);
    }

    public function deleteAction()
    {
    	$id = (int) $this->params()->fromRoute('id',0);
    	if (!$id)
    	{
    		return $this->redirect()->toRoute('album',array('action'=>'index'));
    	}
    	$request = $this->getRequest();
    	if ($request->isPost())
    	{
    		$del = $request->getPost('del','No');
    		if ($del == 'Yes') {
                $id = (int) $request->getPost('id');
                $this->getAlbumTable()->deleteAlbum($id);
            }

            // Redirect to list of albums
            return $this->redirect()->toRoute('album');
    	}
    	return array(
            'id'    => $id,
            'album' => $this->getAlbumTable()->getAlbum($id)
        );
    }
	
    public function getAlbumTable()
    {
        if (!$this->albumTable) {
            $sm = $this->getServiceLocator();
            $this->albumTable = $sm->get('Album\Model\AlbumTable');
        }
        return $this->albumTable;
    }

}
